package com.xingu.xg.controller;

import com.xingu.xg.common.consts.ComRT;
import com.xingu.xg.common.consts.ComResult;
import com.xingu.xg.po.TreeU;
import com.xingu.xg.service.TreeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
@RequestMapping("tree")
public class TreeController {

    @Autowired
    TreeService treeService;

    //查询结构化的全部树。
    @RequestMapping("queryAllByStruct")
    public ComResult<List<TreeU>> queryAllByStruct(){
        return ComRT.success(treeService.queryAllByStruct());
    }

    //同级向下创建数据或向上创建数据。
    //Parameter Boolean isUp 指定向上创建还是向下创建
    //Parameter int id 选中的节点id
    @RequestMapping("upOrDownCreateNode")
    public ComResult<Void> upOrDownCreateNode(Boolean isUp, int id){
        treeService.upOrDownCreateNode(isUp,id);
        return ComRT.success(null);
    }

    //创建子级或创建父级。
    //Parameter Boolean isFather 指定创建父类还是创建子类
    //Parameter int id 选中的节点id
    @RequestMapping("createChildOrFatherNodeForSelfNode")
    public ComResult<Void> createChildOrFatherNodeForSelfNode(Boolean isFather,int id){
        treeService.createChildOrFatherNodeForSelfNode(isFather, id);
        return ComRT.success(null);
    }

    //多行数据进行粘贴。
    //Parameter int[] resource 指定拷贝的节点
    //Parameter int target 选中的拷贝的目标节点id
    @RequestMapping("deepCopyNode")
    public ComResult<Void> deepCopyNode(int[] resource,int target){
        for(int i = 0; i < resource.length; i++)
            treeService.deepCopyNode(resource[i],target);
        return ComRT.success(null);
    }

    //选中数据进行安全删除（其子类不会被删）。
    //Parameter int[] ids 指定被删的节点
    @RequestMapping("securityDeleteNode")
    public ComResult<Void> securityDeleteNode(int[] ids){
        for(int i = 0; i < ids.length; i++)
            treeService.securityDeleteNode(ids[i]);
        return ComRT.success(null);
    }

}
